﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FluentValidation;

namespace ERPStore.NewsLetters.ModelValidators
{
	public class NewsLetterValidator : AbstractValidator<Models.NewsLetter>
	{
		public NewsLetterValidator(Services.NewsLettersService newsLetterService)
		{
			RuleFor(m => m.Content).NotEmpty().WithMessage("le contenu de l'email doit etre renseigné");
			RuleFor(m => m.FileName).NotEmpty().WithMessage("le nom du fichier n'est pas renseigné");
			Custom(nl =>
				{
					if (nl.FileName == null)
					{
						return null; // Catched by NotEmpty Rule
					}
					var existing = newsLetterService.GetNewsLetterByFileName(nl.FileName);
					if (existing != null
						&& nl.Id != existing.Id)
					{
						return new FluentValidation.Results.ValidationFailure("FileName", string.Format("Ce nom de fichier est déjà utilisé par la newsletter NL{0:000000}", existing.Id));
					}
					return null;
				});
		}
	}
}
